在 Fragment 中执行操作
Performing Action inside the Fragment
我有调用 Fragment 的 MainActivity,片段调用 class 是:
public class Main extends Fragment{
//public Main(){}
Button btn;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
final View rootView = inflater.inflate(R.layout.main, container, false);
try{
btn = (Button) rootView.findViewById(R.id.button1);
btn.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
TextView tx = (TextView)rootView.findViewById(R.id.TextView04);
tx.setText("hello World");
}
});
}catch(Exception e){
}
// View rootView = inflater.inflate(R.layout.main, container, false);
return rootView;
}
}
我的问题是,我无法在这个片段中做一些 activity。
只是为了找出如何在这个片段中执行一些 activity,我添加了一个 TextView 和一个按钮,当单击按钮时,它们会将 TextView 的文本更改为 "Hello World"。现在我尝试 运行 应用程序,一切正常,但在单击按钮后出现错误:"Unfprtunately the application has stopped.",我不知道为什么我会收到这样的错误,我是 android 开发所以请帮助并请解释您添加的所有内容。
Here is the Log Cat Error:
02-09 20:33:30.765: E/AndroidRuntime(13596): FATAL EXCEPTION: main
02-09 20:33:30.765: E/AndroidRuntime(13596): java.lang.NullPointerException
02-09 20:33:30.765: E/AndroidRuntime(13596): at info.androidhive.slidingmenu.Main.onClick(Main.java:29)
02-09 20:33:30.765: E/AndroidRuntime(13596): at android.view.View.performClick(View.java:4212)
02-09 20:33:30.765: E/AndroidRuntime(13596): at android.view.View$PerformClick.run(View.java:17476)
02-09 20:33:30.765: E/AndroidRuntime(13596): at android.os.Handler.handleCallback(Handler.java:800)
02-09 20:33:30.765: E/AndroidRuntime(13596): at android.os.Handler.dispatchMessage(Handler.java:100)
02-09 20:33:30.765: E/AndroidRuntime(13596): at android.os.Looper.loop(Looper.java:194)
02-09 20:33:30.765: E/AndroidRuntime(13596): at android.app.ActivityThread.main(ActivityThread.java:5371)
02-09 20:33:30.765: E/AndroidRuntime(13596): at java.lang.reflect.Method.invokeNative(Native Method)
02-09 20:33:30.765: E/AndroidRuntime(13596): at java.lang.reflect.Method.invoke(Method.java:525)
02-09 20:33:30.765: E/AndroidRuntime(13596): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)
02-09 20:33:30.765: E/AndroidRuntime(13596): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
02-09 20:33:30.765: E/AndroidRuntime(13596): at dalvik.system.NativeStart.main(Native Method)
首先,你的代码没有错,你通过代码知道的都是正确的,你只是忘记了一点。根据 log-cat 错误,您的 textView id 有问题,因此请将您的 id 更改为与 main.xml 不同的 id,然后将其写入您的代码,然后尝试 运行 它。还有一件事,尝试删除您的 try catch 异常,这是没用的。这是您的代码的结论。
public class Main extends Fragment{
Button btn;
TextView tx;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
final View rootView = inflater.inflate(R.layout.main, container, false);
btn = (Button) rootView.findViewById(R.id.button1);
tx = (TextView)rootView.findViewById(R.id.newID); //Change your textView ID into different ID
btn.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
tx.setText("hello World");
}
});
return rootView;
}
}
我有调用 Fragment 的 MainActivity,片段调用 class 是:
public class Main extends Fragment{
//public Main(){}
Button btn;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
final View rootView = inflater.inflate(R.layout.main, container, false);
try{
btn = (Button) rootView.findViewById(R.id.button1);
btn.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
TextView tx = (TextView)rootView.findViewById(R.id.TextView04);
tx.setText("hello World");
}
});
}catch(Exception e){
}
// View rootView = inflater.inflate(R.layout.main, container, false);
return rootView;
}
}
我的问题是,我无法在这个片段中做一些 activity。 只是为了找出如何在这个片段中执行一些 activity,我添加了一个 TextView 和一个按钮,当单击按钮时,它们会将 TextView 的文本更改为 "Hello World"。现在我尝试 运行 应用程序,一切正常,但在单击按钮后出现错误:"Unfprtunately the application has stopped.",我不知道为什么我会收到这样的错误,我是 android 开发所以请帮助并请解释您添加的所有内容。
Here is the Log Cat Error:
02-09 20:33:30.765: E/AndroidRuntime(13596): FATAL EXCEPTION: main
02-09 20:33:30.765: E/AndroidRuntime(13596): java.lang.NullPointerException
02-09 20:33:30.765: E/AndroidRuntime(13596): at info.androidhive.slidingmenu.Main.onClick(Main.java:29)
02-09 20:33:30.765: E/AndroidRuntime(13596): at android.view.View.performClick(View.java:4212)
02-09 20:33:30.765: E/AndroidRuntime(13596): at android.view.View$PerformClick.run(View.java:17476)
02-09 20:33:30.765: E/AndroidRuntime(13596): at android.os.Handler.handleCallback(Handler.java:800)
02-09 20:33:30.765: E/AndroidRuntime(13596): at android.os.Handler.dispatchMessage(Handler.java:100)
02-09 20:33:30.765: E/AndroidRuntime(13596): at android.os.Looper.loop(Looper.java:194)
02-09 20:33:30.765: E/AndroidRuntime(13596): at android.app.ActivityThread.main(ActivityThread.java:5371)
02-09 20:33:30.765: E/AndroidRuntime(13596): at java.lang.reflect.Method.invokeNative(Native Method)
02-09 20:33:30.765: E/AndroidRuntime(13596): at java.lang.reflect.Method.invoke(Method.java:525)
02-09 20:33:30.765: E/AndroidRuntime(13596): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)
02-09 20:33:30.765: E/AndroidRuntime(13596): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
02-09 20:33:30.765: E/AndroidRuntime(13596): at dalvik.system.NativeStart.main(Native Method)
首先,你的代码没有错,你通过代码知道的都是正确的,你只是忘记了一点。根据 log-cat 错误,您的 textView id 有问题,因此请将您的 id 更改为与 main.xml 不同的 id,然后将其写入您的代码,然后尝试 运行 它。还有一件事,尝试删除您的 try catch 异常,这是没用的。这是您的代码的结论。
public class Main extends Fragment{
Button btn;
TextView tx;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
final View rootView = inflater.inflate(R.layout.main, container, false);
btn = (Button) rootView.findViewById(R.id.button1);
tx = (TextView)rootView.findViewById(R.id.newID); //Change your textView ID into different ID
btn.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
tx.setText("hello World");
}
});
return rootView;
}
}