我是Android新手,所以我面临很多问题。我要做一个简单的程序,它可以从edittext中获取一个值,并通过单击按钮在textview中打印它。这里是我的代码: setText和OnClickListener不起作用
程序说,不幸的是它停止工作。但是,当我从setOnClickListener删除最后几行时,它工作正常。我也只通过setText测试了它。它也不起作用。谢谢。 logcat的:
XML:
我是Android新手,所以我面临很多问题。我要做一个简单的程序,它可以从edittext中获取一个值,并通过单击按钮在textview中打印它。这里是我的代码: setText和OnClickListener不起作用
程序说,不幸的是它停止工作。但是,当我从setOnClickListener删除最后几行时,它工作正常。我也只通过setText测试了它。它也不起作用。谢谢。 logcat的:
XML:
你的代码应该是PlaceHolderFragment
,像下面..
public class PlaceHolderFragment extends Fragment {
private EditText et;
private Button b;
private TextView tv;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_main, container,
false);
return rootView;
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onActivityCreated(savedInstanceState);
et=(EditText) getView().findViewById(R.id.EditText1);
b = (Button) getView().findViewById(R.id.Button1);
tv = (Button) getView().findViewById(R.id.textView3);
b.setOnClicklistener(new OnClickListener(){
@Override
public void onClick(View arg0){
tv.setText("Pressed");
}
});
}
}
而且从onCreate()
et=(EditText) findViewById(R.id.EditText1);
b = (Button) findViewById(R.id.Button1);
tv = (Button) findViewById(R.id.textView3);
b.setOnClicklistener(new OnClickListener(){
@Override
public void onClick(View arg0){
tv.setText("Pressed");
}
});
删除这些代码试试这个...
更新
import android.support.annotation.Nullable; import android.support.v7.app.ActionBarActivity; import android.support.v4.app.Fragment; import android.os.Bundle; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; public class MainActivity extends ActionBarActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); if (savedInstanceState == null) { getSupportFragmentManager().beginTransaction() .add(R.id.container, new PlaceholderFragment()).commit(); } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } /** * A placeholder fragment containing a simple view. */ public static class PlaceholderFragment extends Fragment { private EditText et; private Button b; private TextView tv; public PlaceholderFragment() { } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.fragment_main, container, false); return rootView; } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { // TODO Auto-generated method stub super.onActivityCreated(savedInstanceState); et = (EditText) getView().findViewById(R.id.editText1); b = (Button) getView().findViewById(R.id.button1); tv = (TextView) getView().findViewById(R.id.textView1); b.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { tv.setText("Pressed"); } }); } } }
输出:
它将工作相同,因为我们把代码onCreate .. – 2014-10-29 04:12:46
它将如何工作相同的代码在onCreate ..你有活动主要相同的控制,如果你有意思你做错了方式..先学习机器人,然后做代码。 – Gunaseelan 2014-10-29 04:16:56
你的控件应该是fragment_main。 – Gunaseelan 2014-10-29 04:17:52
我想你共享XML是fragment_main
不activity_main
。确保你正在膨胀正确的xml,并且只能参考它的控制... NULL Pointer Exception
正在生成,因为只有。
根据你的代码,TextView的,和的EditText按钮必须驻留在activity_main.xml
只有
et=(EditText) findViewById(R.id.EditText1);
b = (Button) findViewById(R.id.Button1);
tv = (TextView) findViewById(R.id.textView3);
确认。
如果控制在frgament_main,你需要使用这个代码:
public class PlaceHolderFragment extends Fragment {
private EditText et;
private Button b;
private TextView tv;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_main, container,
false);
et=(EditText) rootView.findViewById(R.id.EditText1);
b = (Button) rootView.findViewById(R.id.Button1);
tv = (TextView) rootView.findViewById(R.id.textView3);
b.setOnClicklistener(new OnClickListener(){
@Override
public void onClick(View arg0){
tv.setText("Pressed");
}
});
return rootView;
}
}
后你在这里logcat的..在什么情况下会 – codePG 2014-10-29 04:01:35
'savedInstanceState'为空? – Sriram 2014-10-29 04:04:51
我不知道。它是自动生成的。 – 2014-10-29 04:06:31